﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using SolidEdgeAssembly;
using SolidEdgeCommunity.Extensions;
using SolidEdgeConstants;
using SolidEdgeFramework;
using SolidEdgeFrameworkSupport;
using SolidEdgeGeometry;
using SolidEdgePart;
using FeaturePropertyConstants = SolidEdgePart.FeaturePropertyConstants;
using FeatureStatusConstants = SolidEdgePart.FeatureStatusConstants;
using FeatureTopologyQueryTypeConstants = SolidEdgeGeometry.FeatureTopologyQueryTypeConstants;
using PatternOffsetTypeConstants = SolidEdgeFrameworkSupport.PatternOffsetTypeConstants;
using ProfileValidationType = SolidEdgePart.ProfileValidationType;
using ReferenceElementConstants = SolidEdgePart.ReferenceElementConstants;
using SEPatternRecognitionLevel = SolidEdgeConstants.SEPatternRecognitionLevel;

namespace ko_wu_test
{
    public partial class Form1 : Form
    {
        //建立objApp变量，Application是SolidEdgeFrameWork框架结构类型库的子类
        private SolidEdgeFramework.Application objApp;

        //建立objDoc变量
        private Object objDoc;

        const double PI = 3.14159265358979;

        public Form1() => InitializeComponent();

        /**
         * 零件文档
         */
        private void button1_Click_1(object sender, EventArgs e)
        {
            //@1 连接solidedge应用
            // Register with OLE to handle concurrency issues on the current thread.
            SolidEdgeCommunity.OleMessageFilter.Register();

            //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
            objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

            //PartDocument是SolidEdgePart的子类，是一个数据文档，包含零件的几何和属性数据。
            //Creates a new part document.
            objDoc = objApp.Documents.AddPartDocument();

            objApp.DoIdle();
            objApp.Visible = true;
        }

        /**
         * 装配文档
         */
        private void button2_Click(object sender, EventArgs e)
        {
            //@1 连接solidedge应用
            // Register with OLE to handle concurrency issues on the current thread.
            SolidEdgeCommunity.OleMessageFilter.Register();

            //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
            objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

            //Creates a new part document.
            objDoc = objApp.Documents.AddAssemblyDocument();

            objApp.DoIdle();
            objApp.Visible = true;
        }


        /**
         * 工程图文档
         */
        private void button3_Click(object sender, EventArgs e)
        {
            //@1 连接solidedge应用
            // Register with OLE to handle concurrency issues on the current thread.
            SolidEdgeCommunity.OleMessageFilter.Register();

            //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
            objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

            //Creates a new part document.
            objDoc = objApp.Documents.AddDraftDocument();

            objApp.DoIdle();
            objApp.Visible = true;
        }

        /**
         * 选择文件并打开
         */
        private void button4_Click(object sender, EventArgs e)
        {
            OpenFileDialog fileDialog = new OpenFileDialog();
            fileDialog.Multiselect = true;
            fileDialog.Title = "请选择文件";
            fileDialog.Filter = "所有文件(*.par)|*.par";
            if (fileDialog.ShowDialog() == DialogResult.OK)
            {
                string filePath = fileDialog.FileName;
                //@1 连接solidedge应用
                // Register with OLE to handle concurrency issues on the current thread.
                SolidEdgeCommunity.OleMessageFilter.Register();

                //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
                objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

                //open a new part document.
                objDoc = objApp.Documents.Open(filePath);

                objApp.DoIdle();
                objApp.Visible = true;
            }
            else
            {
                MessageBox.Show("路径获取失败", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        /**
         * 保存当前活动的文件
         */
        private void button5_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog dialog = new FolderBrowserDialog();
            dialog.Description = "请选择文件路径";
            DateTime dateTime = DateTime.Now;
            if (dialog.ShowDialog() == DialogResult.OK)
            {
                string foldPath = dialog.SelectedPath;

                string newFilePath = foldPath + @"\" + dateTime.ToString("yyyyMMddHHmmss") + ".par";
                //@1 连接solidedge应用
                // Register with OLE to handle concurrency issues on the current thread.
                SolidEdgeCommunity.OleMessageFilter.Register();

                //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
                objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

                //获取当前活动的数据文档，并报错在当前位置的当前文件名,如果是新创建没有文件名的方法不能用这个，得用SaveAs
                //objApp.GetActiveDocument().Save();
                try
                {
                    objApp.GetActiveDocument().SaveAs(newFilePath);
                    objApp.DoIdle();
                    objApp.Visible = true;
                    MessageBox.Show("保存成功");
                }
                catch
                {
                    MessageBox.Show("没有正在活动的文档");
                }
            }
            else
            {
                MessageBox.Show("路径获取失败", "错误提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        /**
         * 退出软件
         */
        private void button6_Click(object sender, EventArgs e)
        {
            //@1 连接solidedge应用
            // Register with OLE to handle concurrency issues on the current thread.
            SolidEdgeCommunity.OleMessageFilter.Register();

            //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
            objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

            objApp.GetActiveDocument().Save();

            objApp.Quit();
        }

        /**
         * 旋转、偏移平面
         */
        private void button7_Click(object sender, EventArgs e)
        {
            //@1 连接solidedge应用
            // Register with OLE to handle concurrency issues on the current thread.
            SolidEdgeCommunity.OleMessageFilter.Register();

            //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
            objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

            //创建装配文档
            AssemblyDocument objAssyDoc = objApp.Documents.AddAssemblyDocument();

            //获得装配参考面集合对象
            AsmRefPlanes asmRefPlanes = objAssyDoc.AsmRefPlanes;

            //建立与yoz面成120°的参考面
            //先选择yoz参考面,作为母平面
            AsmRefPlane objPPlane = asmRefPlanes.Item(2);
            //然后旋转120°
            AsmRefPlane asmRefPlane = asmRefPlanes.AddAngularByAngle(
                //设置倾斜的母平面
                ParentPlane: objPPlane,
                //旋转角度
                Angle: (2 * PI / 3),
                //与母平面objPPlane相交来定义倾斜平面的旋转轴
                Pivot: asmRefPlanes.Item(1),
                //定义新参考平面轴的原点
                PivotOrigin: ReferenceElementConstants.igPivotEnd,
                //标识顺时针旋转
                NormalSide: ReferenceElementConstants.igNormalSide,
                //这个打开标识为局部的
                Local: true
                );

            //创建零件文档
            PartDocument objPartDoc = objApp.Documents.AddPartDocument();

            //获得零件参考面集合对象
            RefPlanes refPlanes = objPartDoc.RefPlanes;

            //建立与xoy基准面平行的参考平面
            RefPlane refPlane = refPlanes.AddParallelByDistance(
                //定义母平面为xoy面
                ParentPlane: refPlanes.Item(1),
                //定义和母平面的距离
                Distance: 0.1,
                //定义新增参考面为正向的
                NormalSide: ReferenceElementConstants.igNormalSide,
                //标识不是局部的
                Local: false
                );

            objApp.DoIdle();
            objApp.Visible = true;
        }

        /**
         * 参数化，旋转、偏移平面
         */
        private void button8_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "" || textBox1 == null)
            {
                MessageBox.Show("必填项不能为空");
                return;
            }
            //@1 连接solidedge应用
            // Register with OLE to handle concurrency issues on the current thread.
            SolidEdgeCommunity.OleMessageFilter.Register();

            //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
            objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

            //创建零件文档
            PartDocument objPartDoc = objApp.Documents.AddPartDocument();

            //获得零件参考面集合对象
            RefPlanes refPlanes = objPartDoc.RefPlanes;


            //获取动态参数
            string combox1 = comboBox1.Text;
            double textbox1 = double.Parse(textBox1.Text);
            string combox2 = comboBox2.Text;

            //n代表平面代号码,默认为1
            int n = 1;
            //判断平面编号
            if (combox1 == "X-Z")
            {
                n = 3;
            }
            else if (combox1 == "Y-Z")
            {
                n = 2;
            }
            //m代表平移距离
            double m = textbox1 / 1000;
            //g代表方向
            ReferenceElementConstants g = combox2 == "正向" ? ReferenceElementConstants.igNormalSide : ReferenceElementConstants.igReverseNormalSide;

            //建立与xoy基准面平行的参考平面
            RefPlane refPlane = refPlanes.AddParallelByDistance(
                //定义母平面为xoy面
                ParentPlane: refPlanes.Item(n),
                //定义和母平面的距离
                Distance: m,
                //定义新增参考面为正向的
                NormalSide: g,
                //标识不是局部的
                Local: false
                );
            //RefAxes refAxes = objPartDoc.RefAxes;
            //Profile profile;
            //RefAxis refAxis = profile.SetAxisOfRevolution(LineForAxis:objLine);
            objApp.DoIdle();
            objApp.Visible = true;
        }

        /**
         * 划直线
         */
        private void button10_Click(object sender, EventArgs e)
        {
            //@1 连接solidedge应用
            // Register with OLE to handle concurrency issues on the current thread.
            SolidEdgeCommunity.OleMessageFilter.Register();

            //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
            objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

            //创建零件文档
            PartDocument objPartDoc = objApp.Documents.AddPartDocument();

            Lines2d lines2d = objPartDoc.ProfileSets.Add().Profiles.Add(pRefPlaneDisp: objPartDoc.RefPlanes.Item(1)).Lines2d;

            lines2d.AddBy2Points(0, 0, 0.01, 0.01);

            objApp.DoIdle();
            objApp.Visible = true;
        }

        /**
         * 带参-划直线
         */
        private void button12_Click(object sender, EventArgs e)
        {
            if (textBox2.Text == "" || textBox3.Text == "")
            {
                MessageBox.Show("必填项不能为空");
                return;
            }
            //@1 连接solidedge应用
            // Register with OLE to handle concurrency issues on the current thread.
            SolidEdgeCommunity.OleMessageFilter.Register();

            //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
            objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

            //创建零件文档
            PartDocument objPartDoc = objApp.Documents.AddPartDocument();

            Profile objProfile = objPartDoc.ProfileSets.Add().Profiles.Add(objPartDoc.RefPlanes.Item(1));

            //获得直线参数
            double line_angle = double.Parse(textBox3.Text) * PI / 180;
            double line_llen = double.Parse(textBox2.Text) / 1000;

            objProfile.Lines2d.AddByPointAngleLength(0, 0, line_angle, line_llen);

            objApp.DoIdle();
            objApp.Visible = true;
        }

        /**
         * 画圆
         */
        private void button11_Click(object sender, EventArgs e)
        {
            if (textBox5.Text == "")
            {
                MessageBox.Show("必填项不能为空");
                return;
            }
            //@1 连接solidedge应用
            // Register with OLE to handle concurrency issues on the current thread.
            SolidEdgeCommunity.OleMessageFilter.Register();

            //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
            objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

            //创建零件文档
            PartDocument objPartDoc = objApp.Documents.AddPartDocument();

            Profile objProfile1 = objPartDoc.ProfileSets.Add().Profiles.Add(objPartDoc.RefPlanes.Item(1));
            Profile objProfile2 = objPartDoc.ProfileSets.Add().Profiles.Add(objPartDoc.RefPlanes.Item(2));
            Profile objProfile3 = objPartDoc.ProfileSets.Add().Profiles.Add(objPartDoc.RefPlanes.Item(3));

            //获得直线参数
            double radius = double.Parse(textBox5.Text) / 1000;
            //原点加半径
            objProfile1.Circles2d.AddByCenterRadius(0, 0, radius);
            objProfile2.Circles2d.AddByCenterRadius(0, 0, radius);
            objProfile3.Circles2d.AddByCenterRadius(0, 0, radius);

            objApp.DoIdle();
            objApp.Visible = true;
        }

        /**
         * 画弧线
         */
        private void button13_Click(object sender, EventArgs e)
        {
            if (textBox4.Text == "" || textBox6.Text == "")
            {
                MessageBox.Show("必填项不能为空");
                return;
            }
            //@1 连接solidedge应用
            // Register with OLE to handle concurrency issues on the current thread.
            SolidEdgeCommunity.OleMessageFilter.Register();

            //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
            objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

            //创建零件文档
            PartDocument objPartDoc = objApp.Documents.AddPartDocument();

            Profile objProfile = objPartDoc.ProfileSets.Add().Profiles.Add(objPartDoc.RefPlanes.Item(1));

            //获得圆的输入参数
            double arc_r = double.Parse(textBox4.Text) / 1000;
            double arc_a = double.Parse(textBox6.Text);

            //对参数进行数学转换
            double point_x = arc_r * Math.Cos(arc_a * PI / 180);
            double point_y = arc_r * Math.Sin(arc_a * PI / 180);
            //中心点，起始点，终点坐标
            objProfile.Arcs2d.AddByCenterStartEnd(
                xCenter: 0, yCenter: 0,
                xStart: arc_r, yStart: 0,
                xEnd: point_x, yEnd: point_y);

            objApp.DoIdle();
            objApp.Visible = true;
        }

        /**
         * 画矩形
         */
        private void button14_Click(object sender, EventArgs e)
        {
            if (textBox8.Text == "" || textBox7.Text == "")
            {
                MessageBox.Show("必填项不能为空");
                return;
            }
            //@1 连接solidedge应用
            // Register with OLE to handle concurrency issues on the current thread.
            SolidEdgeCommunity.OleMessageFilter.Register();

            //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
            objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

            //创建零件文档
            PartDocument objPartDoc = objApp.Documents.AddPartDocument();

            Profile objProfile = objPartDoc.ProfileSets.Add().Profiles.Add(objPartDoc.RefPlanes.Item(3));

            //获得矩形的输入参数
            double objWidth = double.Parse(textBox8.Text) / 1000;
            double objHeight = double.Parse(textBox7.Text) / 1000;

            RectangularPattern2d objRPattern = objProfile.RectangularPatterns2d.Add(
                OriginX: 0, OriginY: 0,
                Width: objWidth, Height: objHeight,
                Angle: 0,
                OffsetType: PatternOffsetTypeConstants.sePatternFillOffset,
                XCount: 6, YCount: 4,
                XSpace: 0.015, YSpace: 0.01);

            objApp.DoIdle();
            objApp.Visible = true;
        }

        /**
         * 特征拉伸
         */
        private void button15_Click(object sender, EventArgs e)
        {
            //@1 连接solidedge应用
            // Register with OLE to handle concurrency issues on the current thread.
            SolidEdgeCommunity.OleMessageFilter.Register();

            //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
            objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

            //创建零件文档
            PartDocument objPartDoc = objApp.Documents.AddPartDocument();

            //设置参考面
            Profile profile1 = objPartDoc.ProfileSets.Add().Profiles.Add(pRefPlaneDisp: objPartDoc.RefPlanes.Item(3));

            Lines2d lines = profile1.Lines2d;
            //绘制三角形轮廓线（由三条直线围成）
            lines.AddBy2Points(0, 0.034, -0.03, -0.017);
            lines.AddBy2Points(-0.03, -0.017, 0.03, -0.017);
            lines.AddBy2Points(0.03, -0.017, 0, 0.034);

            //使用AddKeypoint方法，使三条直线闭合
            Relations2d relations2D = (Relations2d)profile1.Relations2d;
            relations2D.AddKeypoint(lines.Item(1), (int)KeypointIndexConstants.igLineEnd,
                lines.Item(2), (int)KeypointIndexConstants.igLineStart);
            relations2D.AddKeypoint(lines.Item(2), (int)KeypointIndexConstants.igLineEnd,
                lines.Item(3), (int)KeypointIndexConstants.igLineStart);
            relations2D.AddKeypoint(lines.Item(3), (int)KeypointIndexConstants.igLineEnd,
                lines.Item(1), (int)KeypointIndexConstants.igLineStart);

            //检查草图轮廓
            int lngStatus = profile1.End(ValidationCriteria: ProfileValidationType.igProfileClosed);
            if (lngStatus != 0)
            {
                MessageBox.Show("Progile not closed");
            }

            // Create a new array of profile objects.
            Array profileArray = Array.CreateInstance(typeof(Profile), 1); //创建使用 从零开始的索引、具有指定tppe和长度 的一维数组 这里是创建 SolidEdgePart.Profile 类型的只有一个元素的一个一维数组
            profileArray.SetValue(profile1, 0); // 将这个数组的唯一元素的只设置为 profile

            Model objModel = objPartDoc.Models.AddFiniteExtrudedProtrusion(
                NumberOfProfiles: profileArray.Length,//指定在创建拉伸体时使用的轮廓的数量的长型
                ProfileArray: profileArray, //包含用于拉伸的轮廓的数组，数组中轮廓的数量必须和numberofprofiles参数指定的参数相等
                ProfilePlaneSide: FeaturePropertyConstants.igRight,// 拉伸的方向，igright是正向，igleft是负向，igsymmetric是双向
                ExtrusionDistance: 0.09);
            //关闭草图
            profile1.Visible = false;

            objApp.DoIdle();
            objApp.Visible = true;
        }

        /**
         * 复制图形元素
         */
        private void button16_Click(object sender, EventArgs e)
        {
            //@1 连接solidedge应用
            // Register with OLE to handle concurrency issues on the current thread.
            SolidEdgeCommunity.OleMessageFilter.Register();

            //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
            objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

            //创建零件文档
            PartDocument objPartDoc = objApp.Documents.AddPartDocument();

            Profile objProfile1 = objPartDoc.ProfileSets.Add().Profiles.Add(objPartDoc.RefPlanes.Item(1));

            //原点加半径
            Circle2d circle2D = objProfile1.Circles2d.AddByCenterRadius(0, 0, 0.08);

            //复制圆
            circle2D.Duplicate(XDistance: 0.1);
            circle2D.Duplicate(YDistance: 0.1);
            circle2D.Duplicate(XDistance: 0.1, YDistance: 0.1);

            objApp.DoIdle();
            objApp.Visible = true;
        }

        /**
         * 创建圆角
         */
        private void button18_Click(object sender, EventArgs e)
        {
            //@1 连接solidedge应用
            // Register with OLE to handle concurrency issues on the current thread.
            SolidEdgeCommunity.OleMessageFilter.Register();

            //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
            objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

            //创建零件文档
            PartDocument objPartDoc = objApp.Documents.AddPartDocument();
            //先创建轮廓对象集合
            Profile profile = objPartDoc.ProfileSets.Add().Profiles.Add(objPartDoc.RefPlanes.Item(1));
            //在轮廓里创建直线,用来画长方形，也可以用其他方法划长方形
            Line2d line1 = profile.Lines2d.AddBy2Points(0, 0, 0.08, 0);
            Line2d line2 = profile.Lines2d.AddBy2Points(0.08, 0, 0.08, 0.06);
            Line2d line3 = profile.Lines2d.AddBy2Points(0.08, 0.06, 0, 0.06);
            Line2d line4 = profile.Lines2d.AddBy2Points(0, 0.06, 0, 0);

            //创建圆弧对象集合后创建倒圆角
            profile.Arcs2d.AddAsFillet(line1, line2, 0.01, 0.05, 0.15);
            profile.Arcs2d.AddAsFillet(line2, line3, 0.01, -0.15, -0.05);
            profile.Arcs2d.AddAsFillet(line3, line4, 0.01, 0.15, 0.05);
            profile.Arcs2d.AddAsFillet(line4, line1, 0.01, 0.05, 0.15);

            objApp.DoIdle();
            objApp.Visible = true;
        }

        /**
         * 平行约束
         */
        private void button17_Click(object sender, EventArgs e)
        {
            //@1 连接solidedge应用
            // Register with OLE to handle concurrency issues on the current thread.
            SolidEdgeCommunity.OleMessageFilter.Register();

            //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
            objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

            //创建零件文档
            PartDocument objPartDoc = objApp.Documents.AddPartDocument();

            Profile profile = objPartDoc.ProfileSets.Add().Profiles.Add(pRefPlaneDisp: objPartDoc.RefPlanes.Item(1));

            //弄两直线出来
            Line2d line1 = profile.Lines2d.AddBy2Points(-0.03, 0.06, 0.01, 0.04);
            Line2d line2 = profile.Lines2d.AddBy2Points(-0.05, 0.01, 0.05, 0.03);

            Relations2d relations2D = (Relations2d)profile.Relations2d;
            relations2D.AddParallel(line1, line2);

            //垂直一把
            //relations2D.AddVertical(line1);

            objApp.DoIdle();
            objApp.Visible = true;
        }

        /**
         * 画个三角形
         */
        private void button19_Click(object sender, EventArgs e)
        {
            //@1 连接solidedge应用
            // Register with OLE to handle concurrency issues on the current thread.
            SolidEdgeCommunity.OleMessageFilter.Register();

            //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
            objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

            //创建零件文档
            PartDocument objPartDoc = objApp.Documents.AddPartDocument();

            Profile[] objProfiles = new Profile[3];

            ////////////////////////////////////////////////////////////////////////////////////
            ///@创建三棱柱
            ///////////////////////////////////////////////////////////////////////////////////

            //设置参考面
            objProfiles[1] = objPartDoc.ProfileSets.Add().Profiles.Add(pRefPlaneDisp: objPartDoc.RefPlanes.Item(3));
            Lines2d objLines = objProfiles[1].Lines2d;

            //绘制三角形轮廓线（由三条直线围成）
            objLines.AddBy2Points(0, 0.034, -0.03, -0.017);
            objLines.AddBy2Points(-0.03, -0.017, 0.03, -0.017);
            objLines.AddBy2Points(0.03, -0.017, 0, 0.034);

            //使用AddKeypoint方法，使三条直线闭合
            Relations2d relations2D = (Relations2d)objProfiles[1].Relations2d;
            relations2D.AddKeypoint(objLines.Item(1), (int)KeypointIndexConstants.igLineEnd,
                objLines.Item(2), (int)KeypointIndexConstants.igLineStart);
            relations2D.AddKeypoint(objLines.Item(2), (int)KeypointIndexConstants.igLineEnd,
                objLines.Item(3), (int)KeypointIndexConstants.igLineStart);
            relations2D.AddKeypoint(objLines.Item(3), (int)KeypointIndexConstants.igLineEnd,
                objLines.Item(1), (int)KeypointIndexConstants.igLineStart);

            //检查草图轮廓
            int lngStatus = objProfiles[1].End(ValidationCriteria: ProfileValidationType.igProfileClosed);
            if (lngStatus != 0)
            {
                MessageBox.Show("Progile not closed");
            }

            // Create a new array of profile objects.
            Array profileArray = Array.CreateInstance(typeof(Profile), 1); //创建使用 从零开始的索引、具有指定tppe和长度 的一维数组 这里是创建 SolidEdgePart.Profile 类型的只有一个元素的一个一维数组
            profileArray.SetValue(objProfiles[1], 0); // 将这个数组的唯一元素的只设置为 profile

            Model objModel = objPartDoc.Models.AddFiniteExtrudedProtrusion(
                NumberOfProfiles: profileArray.Length,//指定在创建拉伸体时使用的轮廓的数量的长型
                ProfileArray: profileArray, //包含用于拉伸的轮廓的数组，数组中轮廓的数量必须和numberofprofiles参数指定的参数相等
                ProfilePlaneSide: FeaturePropertyConstants.igRight,// 拉伸的方向，igright是正向，igleft是负向，igsymmetric是双向
                ExtrusionDistance: 0.09);
            //关闭草图
            objProfiles[1].Visible = false;

            objApp.DoIdle();
            objApp.Visible = true;
        }

        /**
         * 生成实体
         */
        private void button20_Click(object sender, EventArgs e)
        {
            //@1 连接solidedge应用
            // Register with OLE to handle concurrency issues on the current thread.
            SolidEdgeCommunity.OleMessageFilter.Register();

            //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
            objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

            //创建零件文档
            PartDocument objPartDoc = objApp.Documents.AddPartDocument();

            Profile[] objProfiles = new Profile[3];

            ////////////////////////////////////////////////////////////////////////////////////
            ///@创建三棱柱
            ///////////////////////////////////////////////////////////////////////////////////

            //设置参考面
            objProfiles[1] = objPartDoc.ProfileSets.Add().Profiles.Add(pRefPlaneDisp: objPartDoc.RefPlanes.Item(3));
            Lines2d objLines = objProfiles[1].Lines2d;

            //绘制三角形轮廓线（由三条直线围成）
            objLines.AddBy2Points(0, 0.034, -0.03, -0.017);
            objLines.AddBy2Points(-0.03, -0.017, 0.03, -0.017);
            objLines.AddBy2Points(0.03, -0.017, 0, 0.034);

            //使用AddKeypoint方法，使三条直线闭合
            Relations2d relations2D = (Relations2d)objProfiles[1].Relations2d;
            relations2D.AddKeypoint(objLines.Item(1), (int)KeypointIndexConstants.igLineEnd,
                objLines.Item(2), (int)KeypointIndexConstants.igLineStart);
            relations2D.AddKeypoint(objLines.Item(2), (int)KeypointIndexConstants.igLineEnd,
                objLines.Item(3), (int)KeypointIndexConstants.igLineStart);
            relations2D.AddKeypoint(objLines.Item(3), (int)KeypointIndexConstants.igLineEnd,
                objLines.Item(1), (int)KeypointIndexConstants.igLineStart);

            //检查草图轮廓
            int lngStatus = objProfiles[1].End(ValidationCriteria: ProfileValidationType.igProfileClosed);
            if (lngStatus != 0)
            {
                MessageBox.Show("objProfiles[1] Progile not closed");
            }

            // Create a new array of profile objects.
            Array profileArray = Array.CreateInstance(typeof(Profile), 1); //创建使用 从零开始的索引、具有指定tppe和长度 的一维数组 这里是创建 SolidEdgePart.Profile 类型的只有一个元素的一个一维数组
            profileArray.SetValue(objProfiles[1], 0); // 将这个数组的唯一元素的只设置为 profile

            Model objModel = objPartDoc.Models.AddFiniteExtrudedProtrusion(
                NumberOfProfiles: profileArray.Length,//指定在创建拉伸体时使用的轮廓的数量的长型
                ProfileArray: profileArray, //包含用于拉伸的轮廓的数组，数组中轮廓的数量必须和numberofprofiles参数指定的参数相等
                ProfilePlaneSide: FeaturePropertyConstants.igRight,// 拉伸的方向，igright是正向，igleft是负向，igsymmetric是双向
                ExtrusionDistance: double.Parse(textBox9.Text) / 1000);
            //关闭草图
            objProfiles[1].Visible = false;

            ////////////////////////////////////////////////////////////////////////////////////
            ///@创建拉伸圆柱
            ///////////////////////////////////////////////////////////////////////////////////

            Body objBody = (Body)objPartDoc.Models.Item(1).Body;
            //从模型的体对象中检索所有的面
            Faces objFaces = (Faces)objBody.Faces[FeatureTopologyQueryTypeConstants.igQueryAll];
            //从面集中得到第1个面复给对象变量objFace
            Face objFace = (Face)objFaces.Item(1);

            //用对象变量objFace为基面，设置参考平面objRefPln
            //采用平行参考面方法设置(距离设置为0)
            RefPlane objRefPln = objPartDoc.RefPlanes.AddParallelByDistance(
                ParentPlane: objFace,
                Distance: 0,
                NormalSide: ReferenceElementConstants.igNormalSide);

            //设置参考面，并在参考面上绘制圆
            Profile objProf = objPartDoc.ProfileSets.Add().Profiles.Add(objRefPln);
            objProf.Circles2d.AddByCenterRadius(0, 0, double.Parse(textBox10.Text) / 1000);

            //检查草图轮廓是否有效
            lngStatus = objProf.End(ProfileValidationType.igProfileClosed);
            if (lngStatus != 0)
            {
                MessageBox.Show("objProf Profile not closed");
            }
            //创建拉伸特征（圆柱）
            objModel.ExtrudedProtrusions.AddFinite(
                Profile: objProf,
                ProfileSide: FeaturePropertyConstants.igLeft,
                ProfilePlaneSide: FeaturePropertyConstants.igRight,
                Depth: double.Parse(textBox11.Text) / 1000);

            //显示草图轮廓线
            objProf.Visible = true;
            ////////////////////////////////////////////////////////////////////////////////////
            ///@创建拉伸圆柱2
            ///////////////////////////////////////////////////////////////////////////////////
            //重新搜索对象中所有的面
            objBody = (Body)objPartDoc.Models.Item(1).Body;
            objFaces = (Faces)objBody.Faces[FeatureTopologyQueryTypeConstants.igQueryAll];
            //从面集合中得到第二个面赋值给对象变量objFace1
            Face objFace1 = (Face)objFaces.Item(2);

            //用对象变量objFace1为基面，设置参考平面objRefPln1
            //采用平行参考面方法获得参考面（距离设置为0）
            RefPlane objRefPln1 = objPartDoc.RefPlanes.AddParallelByDistance(
                ParentPlane: objFace1,
                Distance: 0,
                NormalSide: ReferenceElementConstants.igNormalSide);

            //设置参考面，并在参考面上绘制圆
            Profile objProf1 = objPartDoc.ProfileSets.Add().Profiles.Add(objRefPln1);
            objProf1.Circles2d.AddByCenterRadius(0, 0, double.Parse(textBox10.Text) / 1000);
            //检查草图轮廓是否有效
            lngStatus = objProf1.End(ProfileValidationType.igProfileClosed);
            if (lngStatus != 0)
            {
                MessageBox.Show("objProf2 Profile not closed");
            }
            //创建拉伸实体特征
            objModel.ExtrudedProtrusions.AddFinite(
                Profile: objProf1,
                ProfileSide: FeaturePropertyConstants.igLeft,
                ProfilePlaneSide: FeaturePropertyConstants.igRight,
                Depth: double.Parse(textBox11.Text) / 1000);
            //显示草图轮廓线
            objProf.Visible = true;


            ////////////////////////////////////////////////////////////////////////////////////
            ///@创建拉伸圆柱3
            ///////////////////////////////////////////////////////////////////////////////////
            //重新搜索对象中所有的面
            objBody = (Body)objPartDoc.Models.Item(1).Body;
            objFaces = (Faces)objBody.Faces[FeatureTopologyQueryTypeConstants.igQueryAll];
            //从面集合中得到第二个面赋值给对象变量objFace2
            Face objFace2 = (Face)objFaces.Item(3);

            //用对象变量objFace2为基面，设置参考平面objRefPln2
            //采用平行参考面方法获得参考面（距离设置为0）
            RefPlane objRefPln2 = objPartDoc.RefPlanes.AddParallelByDistance(
                ParentPlane: objFace2,
                Distance: 0,
                NormalSide: ReferenceElementConstants.igNormalSide);

            //设置参考面，并在参考面上绘制圆
            Profile objProf2 = objPartDoc.ProfileSets.Add().Profiles.Add(objRefPln2);
            objProf2.Circles2d.AddByCenterRadius(0, 0, double.Parse(textBox10.Text) / 1000);
            //检查草图轮廓是否有效
            lngStatus = objProf2.End(ProfileValidationType.igProfileClosed);
            if (lngStatus != 0)
            {
                MessageBox.Show("objProf2 Profile not closed");
            }
            //创建拉伸实体特征
            objModel.ExtrudedProtrusions.AddFinite(
                Profile: objProf2,
                ProfileSide: FeaturePropertyConstants.igLeft,
                ProfilePlaneSide: FeaturePropertyConstants.igRight,
                Depth: double.Parse(textBox11.Text) / 1000);
            //显示草图轮廓线
            objProf.Visible = true;

            objApp.DoIdle();
            objApp.Visible = true;
        }

        /**
         * 法兰零件实例
         */
        private void button21_Click(object sender, EventArgs e)
        {
            //@1 连接solidedge应用
            // Register with OLE to handle concurrency issues on the current thread.
            SolidEdgeCommunity.OleMessageFilter.Register();

            //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
            objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

            //创建零件文档
            PartDocument objDoc = objApp.Documents.AddPartDocument();
            ////////////////////////////////////////////////////////////////////////////////////
            ///@声明对象
            ///////////////////////////////////////////////////////////////////////////////////
            ///// Create a new array of profile objects.
            Array objRPProfArray = Array.CreateInstance(typeof(Profile), 1); //创建使用 从零开始的索引、具有指定tppe和长度 的一维数组 这里是创建 SolidEdgePart.Profile 类型的只有一个元素的一个一维数组
            //Profile[] objRPProfArray = new Profile[4];
            Array objRPProfArray1 = Array.CreateInstance(typeof(Profile), 1); //创建使用 从零开始的索引、具有指定tppe和长度 的一维数组 这里是创建 SolidEdgePart.Profile 类型的只有一个元素的一个一维数组
            //Profile[] objRPProfArray1 = new Profile[4];
            Array objEdgArr = Array.CreateInstance(typeof(Edge), 1);
            Array objEdgArray = Array.CreateInstance(typeof(Edge), 1);
            Array db1RadiusArray = new Double[2];

            ////////////////////////////////////////////////////////////////////////////////////
            ///@3用旋转填料创建地盘（大圆）
            ///////////////////////////////////////////////////////////////////////////////////
            //设置参考面
            Profile objRPProfile = objDoc.ProfileSets.Add().Profiles.Add(objDoc.RefPlanes.Item(2));
            //绘制轴线
            objRPProfile.Lines2d.AddBy2Points(0, -0.05, 0, 0.05);
            //设置参考轴
            RefAxis objRPRAxis = (RefAxis)objRPProfile.SetAxisOfRevolution(objRPProfile.Lines2d.Item(1));

            //绘制矩形轮廓线
            objRPProfile.RectangularPatterns2d.Add(
                OriginX: 0, OriginY: 0,
                Width: double.Parse(textBox12.Text) / 1000, Height: double.Parse(textBox13.Text) / 1000,
                Angle: 0, OffsetType: PatternOffsetTypeConstants.sePatternFillOffset,
                XCount: 6, YCount: 4,
                XSpace: 0.015, YSpace: 0.01);
            //检查草图轮廓是否有效
            int lngStatus = 0;
            if (lngStatus != 0)
            {
                MessageBox.Show("objRPProfile Profile for the base feature is self-intersecting");
            }
            //使用旋转填料方法生成特征
            objRPProfArray.SetValue(objRPProfile, 0); // 将这个数组的唯一元素的只设置为 profile
            Model objModel = objDoc.Models.AddFiniteRevolvedProtrusion(
                NumberOfProfiles: objRPProfArray.Length,
                ProfileArray: objRPProfArray,
                ReferenceAxis: objRPRAxis,
                ProfilePlaneSide: FeaturePropertyConstants.igRight,
                AngleofRevolution: 2 * PI);
            //显示草图轮廓线(一般设为隐藏)
            objRPProfile.Visible = false;

            ////////////////////////////////////////////////////////////////////////////////////
            ///@4拉伸除料（在底盘打四个小孔）
            ///////////////////////////////////////////////////////////////////////////////////
            ///设置参考线
            Profile objProf = objDoc.ProfileSets.Add().Profiles.Add(objDoc.RefPlanes.Item(1));
            //绘制轮廓线
            objProf.Circles2d.AddByCenterRadius(0, 0.08, double.Parse(textBox14.Text) / 1000);
            objProf.Circles2d.AddByCenterRadius(0, -0.08, double.Parse(textBox14.Text) / 1000);
            objProf.Circles2d.AddByCenterRadius(0.08, 0, double.Parse(textBox14.Text) / 1000);
            objProf.Circles2d.AddByCenterRadius(-0.08, 0, double.Parse(textBox14.Text) / 1000);

            //检查轮廓线是否封闭
            lngStatus = objProf.End(ProfileValidationType.igProfileClosed);
            if (lngStatus != 0)
            {
                MessageBox.Show("objProf Profile not closed");
            }
            //使用拉伸除料防范，除料深度为textBox14.Text
            objModel.ExtrudedCutouts.AddFinite(
                Profile: objProf,
                ProfileSide: FeaturePropertyConstants.igLeft,
                ProfilePlaneSide: FeaturePropertyConstants.igRight,
                Depth: double.Parse(textBox13.Text) / 1000);
            //显示草图轮廓线(一般设为隐藏)
            objProf.Visible = false;

            ////////////////////////////////////////////////////////////////////////////////////
            ///@5拉伸填料（创建法兰凸台）
            ///////////////////////////////////////////////////////////////////////////////////
            ///创建平行参考面
            RefPlane objRefPln1 = objDoc.RefPlanes.AddParallelByDistance(
                ParentPlane: objDoc.RefPlanes.Item(1),
                Distance: 0.02,
                NormalSide: ReferenceElementConstants.igNormalSide);

            //设置参考面
            Profile objProf1 = objDoc.ProfileSets.Add().Profiles.Add(objRefPln1);
            //绘制轮廓线圈
            objProf1.Circles2d.AddByCenterRadius(0, 0, double.Parse(textBox15.Text) / 1000);

            //检查轮廓线是否封闭
            lngStatus = objProf1.End(ProfileValidationType.igProfileClosed);
            if (lngStatus != 0)
            {
                MessageBox.Show("objProf1 Profile not closed");
            }
            objRPProfArray1.SetValue(objProf1, 0);

            //创建拉伸特征。拉伸长度由textBox16.Text定义
            Model objModel1 = objDoc.Models.AddFiniteExtrudedProtrusion(
                NumberOfProfiles: objRPProfArray1.Length,
                ProfileArray: objRPProfArray1,
                ProfilePlaneSide: FeaturePropertyConstants.igRight,
                ExtrusionDistance: double.Parse(textBox16.Text) / 1000);
            //显示草图轮廓线
            objRefPln1.Visible = false;

            ////////////////////////////////////////////////////////////////////////////////////
            ///@6在凸台上做45°倒角
            ///////////////////////////////////////////////////////////////////////////////////
            ExtrudedProtrusion objExtProt = objModel1.ExtrudedProtrusions.Item(1);
            //检查特性1的所有边赋给边的集合对象变量
            Edges objEdges = (Edges)objExtProt.Edges[FeatureTopologyQueryTypeConstants.igQueryAll];
            //将边存到数组
            objEdgArr.SetValue(objEdges.Item(1), 0);
            //检索特征1的所有面赋给集合对象变量
            Faces objFacs = (Faces)objExtProt.Faces[FeatureTopologyQueryTypeConstants.igQueryAll];

            //创建倒角
            Chamfer objChmfr = objModel.Chamfers.AddSetbackAngle(
                ReferenceFace: objFacs.Item(1),
                NumberOfEdgeSets: objEdgArr.Length,
                EdgeSetArray: objEdgArr,
                SetbackDistance: 0.005,
                Angle: 45 * PI / 180);

            ////////////////////////////////////////////////////////////////////////////////////
            ///@7用旋转除料方式形成中心孔
            ///////////////////////////////////////////////////////////////////////////////////
            //设置参考面
            Profile objProf11 = objDoc.ProfileSets.Add().Profiles.Add(objDoc.RefPlanes.Item(3));
            //画轮廓线
            objProf11.RectangularPatterns2d.Add(
                OriginX: 0, OriginY: 0,
                Width: 0.02, Height: 0.08,
                Angle: 0, OffsetType: PatternOffsetTypeConstants.sePatternFillOffset,
                XCount: 6, YCount: 4,
                XSpace: 0.015, YSpace: 0.01);

            //设置旋转轴
            Line2d objCutoutLine = objProf11.Lines2d.AddBy2Points(0, -0.05, 0, 0.05);
            RefAxis objcutoutRefAxis = (RefAxis)objProf11.SetAxisOfRevolution(objCutoutLine);

            //使用旋转除料方法打孔
            objModel1.RevolvedCutouts.AddFinite(
                Profile: objProf11,
                RefAxis: objcutoutRefAxis,
                ProfileSide: FeaturePropertyConstants.igLeft,
                ProfilePlaneSide: FeaturePropertyConstants.igRight,
                AngleofRevolution: (2 * PI));
            //隐藏草图轮廓线
            objProf11.Visible = false;

        }

        /**
         * 生成实体特征-长方体槽
         */
        private void button22_Click(object sender, EventArgs e)
        {
            //@1 连接solidedge应用
            // Register with OLE to handle concurrency issues on the current thread.
            SolidEdgeCommunity.OleMessageFilter.Register();

            //Connect to or start Solid Edge.这个方法里面的两个参数是开启功能：1、如果未启动就启动一个，2、如果启动了就显示,
            objApp = SolidEdgeCommunity.SolidEdgeUtils.Connect(true, true);

            //创建零件文档
            PartDocument objDoc = objApp.Documents.AddPartDocument();
            ////////////////////////////////////////////////////////////////////////////////////
            ///@声明对象
            ///////////////////////////////////////////////////////////////////////////////////
            ///// Create a new array of profile objects.
            Array objEPProfArray = Array.CreateInstance(typeof(Profile), 1); //创建使用 从零开始的索引、具有指定tppe和长度 的一维数组 这里是创建 SolidEdgePart.Profile 类型的只有一个元素的一个一维数组
            Array db1RadiusArray = new Double[2];

            RefPlane xoy = objDoc.RefPlanes.Item(1);
            RefPlane yoz = objDoc.RefPlanes.Item(2);
            RefPlane xoz = objDoc.RefPlanes.Item(3);

            int lngStatus = 0;

            ////////////////////////////////////////////////////////////////////////////////////
            ///@3拉伸长方体
            ///////////////////////////////////////////////////////////////////////////////////
            //创建基本特征的轮廓线-矩形
            Profile objEPProfile = objDoc.ProfileSets.Add().Profiles.Add(xoy);
            objEPProfile.RectangularPatterns2d.Add(
                OriginX: 0, OriginY: 0,
                Width: double.Parse(Rect_Length.Text) / 1000, Height: double.Parse(Rect_Width.Text) / 1000,
                Angle: 0, OffsetType: PatternOffsetTypeConstants.sePatternFillOffset,
                XCount: 6, YCount: 4,
                XSpace: 0.015, YSpace: 0.01);

            //轮廓线校验
            lngStatus = objEPProfile.End(ProfileValidationType.igProfileClosed);
            if (lngStatus != 0)
            {
                MessageBox.Show("objEPProfile Profile for the base feature is self-intersecting");
            }

            //创建拉伸
            objEPProfArray.SetValue(objEPProfile, 0);
            Model objModel = objDoc.Models.AddFiniteExtrudedProtrusion(
                NumberOfProfiles: objEPProfArray.Length,
                ProfileArray: objEPProfArray,
                ProfilePlaneSide: FeaturePropertyConstants.igRight,
                ExtrusionDistance: double.Parse(Rect_Height.Text) / 1000);

            objEPProfile.Visible = false;

            ////////////////////////////////////////////////////////////////////////////////////
            ///@4拉伸除料，切出槽
            ///////////////////////////////////////////////////////////////////////////////////
            if (double.Parse(Rect_Length.Text) > double.Parse(Cut_Length.Text) &&
                double.Parse(Rect_Width.Text) > double.Parse(Cut_Width.Text))
            {
                //建立参考面
                RefPlane objRPParallel = objDoc.RefPlanes.AddParallelByDistance(
                    ParentPlane: xoy,
                    Distance: double.Parse(Rect_Height.Text) / 1000,
                    NormalSide: ReferenceElementConstants.igNormalSide);

                //画槽的轮廓线
                objEPProfile = objDoc.ProfileSets.Add().Profiles.Add(objRPParallel);
                objEPProfile.RectangularPatterns2d.Add(
                    OriginX: 0.01, OriginY: 0.01,
                    Width: double.Parse(Cut_Length.Text) / 1000, Height: double.Parse(Cut_Width.Text) / 1000,
                    Angle: 0, OffsetType: PatternOffsetTypeConstants.sePatternFillOffset,
                    XCount: 6, YCount: 4,
                    XSpace: 0.015, YSpace: 0.01);

                //创建槽的拉伸除料
                ExtrudedCutout objExtCut = objModel.ExtrudedCutouts.AddFinite(
                    Profile: objEPProfile,
                    ProfileSide: FeaturePropertyConstants.igLeft,
                    ProfilePlaneSide: FeaturePropertyConstants.igLeft,
                    Depth: double.Parse(Cut_Height.Text) / 1000);
            }
            else
            {
                MessageBox.Show("槽的长度超出了实体长，请重新输入");
            }
            objEPProfile.Visible = false;

        }
        //获取槽深
        private void button23_Click(object sender, EventArgs e)
        {
            //获取当前活动文档
            PartDocument partDocument = (PartDocument)objApp.ActiveDocument;
            //拾取数据
            ExtrudedCutout objcutout = partDocument.Models.Item(1).ExtrudedCutouts.Item(1);

            if (objcutout.ExtentType == FeaturePropertyConstants.igFinite)
            {
                //数据显示
                Old_Depth.Text = (objcutout.Depth * 1000).ToString();
            }

        }

        /**
         * 修改槽深
         */
        private void button24_Click(object sender, EventArgs e)
        {
            if (Chg_Depth.Text == "")
            {
                MessageBox.Show("必填项不能为空");
            }
            //获取当前活动文档
            PartDocument partDocument = (PartDocument)objApp.ActiveDocument;
            //修改数据
            ExtrudedCutout objcutout = partDocument.Models.Item(1).ExtrudedCutouts.Item(1);

            if (objcutout.ExtentType == FeaturePropertyConstants.igFinite)
            {
                objcutout.Depth = double.Parse(Chg_Depth.Text) / 1000;
            }
        }
    }
}
